function HashMap()
{
   /* * Map 大小 * */
   var size = 0;
   /* * 对象 * */
   var entry = new Object();

   /* * 存 * */
   this.put = function (key , value)
   {
      if( ! this.containsKey(key))
      {
         size ++ ;
      }
      entry[key] = value;
   }

   /* * 取 * */
   this.get = function (key)
   {
      return this.containsKey(key) ? entry[key] : null;
   }

   this.getValueFromKey = function(value) {
	   if (this.containsValue(value)) {
		   
		   for(var prop in entry)
	      {
	         if(entry[prop] == value)
	         {
	            return prop;
	         }
	      }
		} else {
			return "null";
		}
   }
   
   /* * 删除 * */
   this.remove = function ( key )
   {
      if( this.containsKey(key) && ( delete entry[key] ) )
      {
         size -- ;
      }
   }

   /* * 是否包含 Key * */
   this.containsKey = function ( key )
   {
      return (key in entry);
   }

   /* * 是否包含 Value * */
   this.containsValue = function ( value )
   {
      for(var prop in entry)
      {
         if(entry[prop] == value)
         {
            return true;
         }
      }
      return false;
   }

   /* * 所有 Value * */
   this.values = function ()
   {
      var values = new Array();
      for(var prop in entry)
      {
         values.push(entry[prop]);
      }
      return values;
   }

   /* * 所有 Key * */
   this.keys = function ()
   {
      var keys = new Array();
      for(var prop in entry)
      {
         keys.push(prop);
      }
      return keys;
   }

   /* * Map Size * */
   this.size = function ()
   {
      return size;
   }

   /* 清空 */
   this.clear = function ()
   {
      size = 0;
      entry = new Object();
   }
}

Array.prototype.remove = function(val) {
    for (var i = 0; i < this.length; i++) {
        if (this[i] === val) {
            this.splice(i, 1);
            i--;
        }
    }
    return this;
}

Array.prototype.contains = function (value) {
	var i = this.length;
    while (i--) {
        if (this[i] === value) {
            return true;
        }
    }
    return false;
}
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
};

/**
 * 包提示相关信息
 * @param {Object} value
 */
PACK = {};
PACK.ALERT = {
	info : function(value) {
		$.messager.alert('提示信息',value,'info');
	},
	warn : function(value) {
		$.messager.alert('提示信息',value,'warn');
	},
	error : function(value) {
		$.messager.alert('错误信息',value,'error');
	}
	
}


/**
 * @classDescription ajax加载提示
 */
var ajaxLoader = {};
ajaxLoader.action = {
	/**
	 * 缓冲提示公用方法
	 * @param handMsg 提示的信息
	 */
	ajaxLoaderDivEffect : function(handMsg){
		ajaxLoader.action.hasContainer();
		$('#fade').css('display', 'block');
	    $("#progressBar").html(handMsg).show();
	},

	/**
	 * 关闭缓冲提示及遮罩
	 */
	ajaxLoaderDivClose : function(){
	    $("#progressBar").html("").hide();
		$('#fade').css('display', 'none');
	},

	/**
	 * 判断是否存在载体，没有则创建
	 */
	hasContainer : function(){
		if($("#fade").length == 0){
			var fade = $("<div/>").addClass("black_overlay").attr("id","fade");
			fade.appendTo("body");
		}
		if($("#progressBar").length == 0){
			var progressBar = $("<div/>").addClass("progressBar").attr("id","progressBar").css("display","none");
			progressBar.appendTo("body");
		}
	}
};